Modul 6 von 16 · 📖 7 min Lesezeit · ⏱ 30 min gesamt
FI-AE 06 SQL — DDL, DML, Joins und Aggregate
Inhaltsverzeichnis (5 Abschnitte)
FI-AE 06 SQL — DDL, DML, Joins und Aggregate
In diesem Modul erlernen Sie die grundlegenden Konzepte der Datenbankmanipulation und -abfrage mit SQL. Sie werden Tabellen strukturieren, Daten einfügen, ändern und löschen sowie komplexe Abfragen mit Joins, Aggregatfunktionen und Unterabfragen erstellen. Der Fokus liegt auf dem praktischen Umgang mit relationalen Datenbanken und dem Verständnis von Transaktionen.
Konzepte und Hintergrund
- DDL (Data Definition Language)
- Befehle zur Definition und Modifikation der Datenbankstruktur, einschließlich CREATE, ALTER und DROP.
- DML (Data Manipulation Language)
- Befehle zur Bearbeitung von Daten in Tabellen, hauptsächlich INSERT, UPDATE, DELETE und SELECT.
- JOIN
- Operation zum Kombinieren von Zeilen aus zwei oder mehr Tabellen basierend auf verwandten Spalten.
- Aggregatfunktionen
- Funktionen, die mehrere Werte zu einem einzelnen Wert zusammenfassen, wie COUNT, SUM, AVG, MIN und MAX.
- Transaktionen
- Gruppe von Datenbankoperationen, die als einzige Einheit behandelt werden, mit den ACID-Eigenschaften (Atomicity, Consistency, Isolation, Durability).
Praktische Schritte
- Erstellen Sie eine neue Tabelle mit Primärschlüssel und Fremdschlüsselbeziehungen. Dies legt die Grundstruktur für Ihre Datenbank.
- Fügen Sie Daten in die Tabellen mit INSERT-Befehlen ein. Dies initialisiert Ihre Datenbank mit Beispieldaten.
- Verwenden Sie SELECT mit JOIN, um Daten aus mehreren Tabellen zu kombinieren. Dies ermöglicht komplexe Abfragen über relationale Daten.
- Wenden Sie GROUP BY und HAVING an, um Ergebnisse zu gruppieren und zu filtern. Dies ist nützlich für aggregierte Analysen.
- Implementieren Sie eine Transaktion mit BEGIN, COMMIT und ROLLBACK, um Datenkonsistenz zu gewährleisten.
CREATE TABLE kunden (
kunden_id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
CREATE TABLE bestellungen (
bestell_id INT PRIMARY KEY,
kunden_id INT,
datum DATE,
betrag DECIMAL(10,2),
FOREIGN KEY (kunden_id) REFERENCES kunden(kunden_id)
);
INSERT INTO kunden (kunden_id, name, email) VALUES
(1, 'Max Mustermann', '[email protected]'),
(2, 'Erika Mustermann', '[email protected]');
INSERT INTO bestellungen (bestell_id, kunden_id, datum, betrag) VALUES
(101, 1, '2023-01-15', 99.99),
(102, 2, '2023-01-16', 149.50);
SELECT k.name, b.datum, b.betrag
FROM kunden k
JOIN bestellungen b ON k.kunden_id = b.kunden_id;
SELECT k.kunden_id, k.name, COUNT(b.bestell_id) as anzahl_bestellungen
FROM kunden k
LEFT JOIN bestellungen b ON k.kunden_id = b.kunden_id
GROUP BY k.kunden_id, k.name
HAVING COUNT(b.bestell_id) > 0;
BEGIN;
UPDATE kunden SET email = '[email protected]' WHERE kunden_id = 1;
INSERT INTO bestellungen (bestell_id, kunden_id, datum, betrag)
VALUES (103, 1, '2023-01-17', 79.99);
COMMIT;
Häufige Fallstricke
Weiterführende Ressourcen
- PostgreSQL SQL-Befehlsreferenz
- MySQL SQL-Befehlsreferenz
- W3Schools SQL Tutorial
- SQLZoo interaktives SQL-Tutorial
- SQL Shack SQL Joins Tutorial
Wissens-Check
Vier Fragen zur Selbstkontrolle. Klicken Sie jede Frage an, um die richtige Antwort und Erklärung zu sehen.
Welcher SQL-Befehl gehört zur DDL (Data Definition Language) und wird verwendet, um eine neue Tabelle in einer Datenbank zu erstellen?
- A) INSERT INTO
- B) CREATE TABLE
- C) SELECT * FROM
- D) UPDATE table SET
Richtige Antwort: B. CREATE TABLE ist ein DDL-Befehl zum Erstellen von Tabellenstrukturen. INSERT INTO, SELECT und UPDATE sind DML-Befehle zur Datenmanipulation.
Welche JOIN-Typ würde alle Zeilen aus der linken Tabelle und die übereinstimmenden Zeilen aus der rechten Tabelle zurückgeben?
- A) INNER JOIN
- B) RIGHT JOIN
- C) LEFT JOIN
- D) FULL OUTER JOIN
Richtige Antwort: C. LEFT JOIN gibt alle Zeilen aus der linken Tabelle und übereinstimmende Zeilen aus der rechten Tabelle zurück. INNER JOIN gibt nur übereinstimmende Zeilen, RIGHT JOIN ist das Gegenteil von LEFT JOIN, und FULL OUTER JOIN gibt alle Zeilen aus beiden Tabellen zurück.
Welche SQL-Funktion würde die Anzahl der Zeilen in einer Tabelle zählen, ohne NULL-Werte zu berücksichtigen?
- A) SUM()
- B) AVG()
- C) COUNT(*)
- D) COUNT(column)
Richtige Antwort: D. COUNT(column) zählt nur die Zeilen, in denen die angegebene Spalte nicht NULL ist. COUNT(*) zählt alle Zeilen, unabhängig von NULL-Werten, SUM() addiert Werte, und AVG() berechnet den Durchschnitt.
Was ist der Hauptzweck von Datenbanktransaktionen?
- A) Die Performance von Abfragen zu verbessern
- B) Sicherzustellen, dass eine Gruppe von Operationen als atomare Einheit behandelt wird
- C) Speicherplatz in der Datenbank zu reduzieren
- D) Die Sicherheit von Benutzerdaten zu erhöhen
Richtige Antwort: B. Transaktionen stellen sicher, dass eine Gruppe von Operationen als atomare Einheit behandelt wird (ACID-Eigenschaften). Sie verbessern nicht direkt die Performance, reduzieren nicht zwangsläufig Speicherplatz und erhöhen nicht primär die Sicherheit.